﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Montezuma
{
    class Animacao
    {
        public Vector2 posicao;
        Texture2D textura;

        float tempoFrame;
        public float tempoFrameDecorrido;
        public Point posicaoInicial;
        public Point frameAtual;
        public float framesPorSegundos;
        public Point tamanhoFrame;
        public int quantidadeFrame;

        public bool loop;
        public bool ativo = false;
        public SpriteEffects spriteEffects;

        public Animacao(Texture2D textura, Vector2 posicao, Point posicaoInicial, Point tamanhoFrame, int framesPorSegundos, int quantidadeFrame, bool loop)
        {
            this.textura = textura;
            this.posicao = posicao;
            this.posicaoInicial = posicaoInicial;
            this.tamanhoFrame = tamanhoFrame;
            this.framesPorSegundos = framesPorSegundos;
            this.quantidadeFrame = quantidadeFrame;
            this.loop = loop;
            frameAtual = Point.Zero;
            tempoFrame = 1 / (float)framesPorSegundos;
            spriteEffects = SpriteEffects.None;
        }

        public void Update(GameTime gameTime)
        {
            if (ativo == false)
            {
                frameAtual = Point.Zero;
            }

            if (ativo)
            {
                
                tempoFrameDecorrido += (float)gameTime.ElapsedGameTime.TotalSeconds;

                if (tempoFrameDecorrido > tempoFrame)
                {
                    frameAtual.X++;
                    tempoFrameDecorrido = 0;
                    if (frameAtual.X >= quantidadeFrame)
                    {
                        if (loop == false)
                        {
                            frameAtual.X--;
                        }

                        if (loop)
                        {
                            frameAtual.X = 0;
                        }
                    }
                }
            }
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            ativo = true;
            spriteBatch.Draw(textura, posicao, new Rectangle(posicaoInicial.X + (frameAtual.X * tamanhoFrame.X), posicaoInicial.Y + (frameAtual.Y * tamanhoFrame.Y), tamanhoFrame.X, tamanhoFrame.Y), Color.White, 0, Vector2.Zero, 1f, spriteEffects, 0); 
        }
    }
}
